#define CATCH_CONFIG_COLOUR_ANSI

// 减少编译时间，特别适合大型项目。
// 禁用一些较少用到的特性（如字符串匹配的详细分析等）以提高编译速度。
// 适用于开发过程中快速编译和调试测试。
#define CATCH_CONFIG_FAST_COMPILE

// Catch2 会自动生成 main() 函数，用户不需要手动编写测试入口。
#define CATCH_CONFIG_MAIN
// Catch2 允许用户自定义 main() 函数，用于在运行测试前后进行额外操作。
// #define CATCH_CONFIG_RUNNER

// 启用 Catch2 的基准测试功能（Benchmarking）用于测试代码的性能和运行时间。
#define CATCH_CONFIG_ENABLE_BENCHMARKING

#include "catch2/catch.hpp"

// 自定义事件监听器类
class TestCaseListener : public Catch::TestEventListenerBase
{
   public:
    using TestEventListenerBase::TestEventListenerBase;  // 使用基类构造函数

    // 在测试用例开始时被调用
    void testCaseStarting(Catch::TestCaseInfo const &testInfo) override
    {
        std::cout << std::endl;
        std::cout << "Running test case: \033[32m" << testInfo.name << "\033[0m" << std::endl;
    }
};

// 注册事件监听器
CATCH_REGISTER_LISTENER(TestCaseListener)